prefix sum algorithm